#ifndef SORTED_ARRAY_H
#define SORTED_ARRAY_H

#include <types.h>

typedef void* item;

struct sorted_array {
    item* array;
    uint32 count;
    uint32 max_size;
    int8 (*compare)(item, item);
};

int8 default_compare(item a, item b);

struct sorted_array sorted_array_create(uint32 max_size, int8 (*compare)(item, item));

struct sorted_array sorted_array_create_in(item* array, uint32 max_size, int8 (*compare)(item, item));

void sorted_array_destroy(struct sorted_array* array);

void sorted_array_insert(struct sorted_array* array, item data);

item sorted_array_get(struct sorted_array* array, uint32 idx);

void sorted_array_remove(struct sorted_array* array, uint32 idx);

uint32 sorted_array_find(struct sorted_array* array, item data);

#endif
